package com.zyj.test.month2.day1;

/**
 * @author Yijia Zhang
 * @create 2024-11-20 22:26
 */
public class Code0003 {
    /**
     * 滑动窗口--长度最大值
     * while(r < len) {
     *     //1 判断r + 1是否还符合条件
     *     //1.1 不符合条件，while(l++) 直到r + 1符合调教
     *     //1.2 符合条件什么都不敢
     *     //2 r++
     *     //3 计算max
     * }
     */
    public int lengthOfLongestSubstring(String s) {
        int[] bitMap = new int[128];
        int l = 0, r = 0;
        int len = s.length();
        int max = 0;
        while (r < len) {
            char c = s.charAt(r);
            while (bitMap[c] > 0) {
                bitMap[s.charAt(l)]--;
                l++;
            }
            bitMap[c]++;
            max = Math.max(r - l + 1, max);
            r++;
        }
        return max;
    }
}
